<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="banner-heading flex_ccenter">
            <div class="heading-item">
              <h1 class="title fw700 f-42 c-fff">
                Muat Turun Cerita Instagram
              </h1>
              <h2 class="sub c-fff f-18 fw400">
                Pemuat Turun Cerita Instagram Terbaik Percuma
              </h2>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                    type="text"
                    class="input f-18"
                    v-model="input"
                    @input="handleInput"
                    @paste="handleInput"
                    placeholder="Paste URL Instagram"
                    list="fruits"
                    name="fruit"
                  />
                  <datalist id="fruits">
                    <option value="Apple"></option>
                    <option value="Banana"></option>
                    <option value="Cherry"></option>
                  </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Mendapatkan semula data, sila tunggu beberapa saat!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Tapak ini tidak boleh memproses pautan anda kerana ia adalah
              peribadi
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Data yang anda masukkan bukan pautan, sila masukkan pautan yang
              sah untuknya contoh:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Muat turun dengan apl Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Apl kami menawarkan penyelesaian pantas dan mudah untuk memuat
                turun video Instagram, menyediakan video berkualiti HD tanpa
                tera air.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Muat Turun Cerita Instagram dengan Savinginsta
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta.Com ialah pemuat turun cerita Instagram terulung,
              dikenali untuk kemudahan penggunaan dan keupayaan untuk memuat
              turun Instagram berkualiti tinggi cerita pada kelajuan terpantas.
              Muat turun Cerita Instagram ke anda telefon, PC atau tablet dalam
              kualiti tertinggi menggunakan Instagram kami pemuat turun video
              terus dari penyemak imbas anda. Tiada perisian pemasangan
              diperlukan, dan ia menyokong kedua-dua Android dan iOS.
            </p>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Mengapa Gunakan Savinginsta untuk Muat Turun Cerita Instagram?
            </h3>
            <p class="f-16 c-ccc">
              Cerita Instagram, dipenuhi dengan foto dan video yang menawan
              hati, adalah sebahagian penting daripada ekspresi digital kami
              tetapi hanya boleh dilihat selama 24 jam. Jika anda suka melihat
              Cerita Instagram dan mahu muat turunnya, Savinginsta sedia
              membantu. Cukup masukkan URL Cerita Instagram ke dalam
              Savinginsta, dan muat turun yang terbaik Cerita Instagram secara
              percuma.
            </p>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Bagaimana untuk memuat turun Video Instagram Story?
              </h3>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Langkah01:</span>
                  <span class="f-16 c-000">
                    Masukkan nama pengguna Instagram yang ceritanya anda mahu
                    muat turun ke dalam Savinginsta.App.</span
                  >
                </div>
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Langkah02:</span>
                <span class="f-16 c-000">
                  Pilih Cerita yang ingin anda muat turun.</span
                >
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Langkah03:</span>
                <span class="f-16 c-000"
                  >Klik 'Muat Turun' untuk menyimpan cerita Instagram video ke
                  anda peranti.</span
                >
              </div>
            </div>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Bagaimana untuk memuat turun Insta Story ke Telefon Anda?
            </h3>
            <div class="attributes-list">
              <div class="features-title">
                Memuat turun adalah sangat mudah. Berikut ialah panduan
                terperinci:
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Buka Instagram dalam penyemak imbas seperti Chrome, Firefox
                  atau aplikasi Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Pilih cerita yang anda rasa menarik.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Klik pada video yang ingin anda muat turun.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">Salin URL cerita dari bar alamat.</div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Tampalkan nama pengguna ke dalam kotak alamat di Savinginsta.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Tekan 'Muat Turun' untuk memuat turun cerita Instagram dalam
                  talian.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Foto atau video cerita IG anda yang dimuat turun kini berada
                  dalam folder anda.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Bagaimana untuk Muat Turun Cerita dan Sorotan Instagram Dalam
                Talian?
              </h3>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="f-16 c-000"
                    >Dapatkan pautan daripada Cerita Instagram atau salin pautan
                    nama pengguna akaun Instagram yang anda ingin muat turun
                    daripada.</span
                  >
                </div>
              </div>
              <div class="step">
                <span class="f-16 c-000"
                  >Pergi ke Savinginsta - Insta Story Downloader dan tampal
                  pautan cerita ke dalam bar alat.
                </span>
              </div>
              <div class="step">
                <span class="f-16 c-000"
                  >Pilih Cerita yang dipaparkan pada skrin, pilih cerita anda
                  ingin memuat turun, dan tekan 'Muat turun'.</span
                >
              </div>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Apa yang Menjadikan Savinginsta.Com Muat Turun Cerita Instagram
              (IG) Terbaik alat?
            </h3>
            <ul class="f-16 c-ccc">
              <li>Mesra pengguna dan alat terpantas.</li>
              <li>
                Kemas kini berterusan untuk menawarkan perkhidmatan terbaik.
              </li>
              <li>
                PERCUMA sepenuhnya! Kami menyokong pembangunan kami melalui
                tahap minimum mengiklankan.
              </li>
            </ul>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Alatan</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/ms/instagram-story-download"
                      >Instagram Story Downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <nuxt-link to="/ms/instagram-reels-video-download"
                      >Instagram Reels Downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok Downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Sokongan</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Kenalan </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">sah</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Syarat Perkhidmatan
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> Dasar Privasi </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Kami tidak bergabung dengan Instagram atau Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>
    
<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";
export default {
  components: { pageHeader, SuccessContent },
  head: {
    htmlAttrs: {
      lang: "ms",
    },
    bodyAttrs: {
      "data-lang": "ms",
    },
    title: "Pemuat turun Cerita Instagram Percuma Terbaik",
    meta: [
      { property: "og:locale", content: "ms" },
      //Page Information
      {
        name: "description",
        content:
          "Muat turun cerita Instagram dalam talian dengan mudah dengan Savinginsta Instagram Downloader percuma. Simpan cerita Instagram berkualiti tinggi terus ke komputer atau telefon anda tanpa sebarang iklan.Tiada tera air",
      },

      //Schema.org Microdata
      {
        itemprop: "name",
        content: "Pemuat turun Cerita Instagram Percuma Terbaik",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content: "Pemuat turun Cerita Instagram Percuma Terbaik",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/ms/instagram-story-download" },

      {
        property: "og:description",
        content:
          "Muat turun cerita Instagram dalam talian dengan mudah dengan Savinginsta Instagram Downloader percuma. Simpan cerita Instagram berkualiti tinggi terus ke komputer atau telefon anda tanpa sebarang iklan.Tiada tera air",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/ms/instagram-story-download" },
      {
        name: "twitter:title",
        content: "Pemuat turun Cerita Instagram Percuma Terbaik",
      },
      {
        name: "twitter:description",
        content:
          "Muat turun cerita Instagram dalam talian dengan mudah dengan Savinginsta Instagram Downloader percuma. Simpan cerita Instagram berkualiti tinggi terus ke komputer atau telefon anda tanpa sebarang iklan.Tiada tera air",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/ms/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el/instagram-story-download",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/ms/instagram-story-download",
      },
    ],
    script: [
      {
        json: {
          "@context": "http://schema.org",
          "@graph": [
            {
              "@type": "WebSite",
              name: "Savinginsta",
              alternateName: "Instagram downloader",
              url: "https://savinginsta.com",
            },
            {
              "@type": "WebPage",
              name: "Pemuat turun Cerita Instagram Percuma Terbaik - Savinginsta", //title
              inLanguage: "ms", //语种
              description:
                "Muat turun cerita Instagram dalam talian dengan mudah dengan Savinginsta Instagram Downloader percuma. Simpan cerita Instagram berkualiti tinggi terus ke komputer atau telefon anda tanpa sebarang iklan.Tiada tera air.", //元描述
              image: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg", //绝对路径
              url: "https://savinginsta.com/ms/instagram-story-download", //当前url
            },
          ],
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Apakah itu Instagram Story Downloader?`,
          content: `Ia adalah alat percuma untuk memuat turun Cerita Instagram dengan mudah tanpa pendaftaran.`,
        },
        {
          title: `Bagaimana untuk memuat turun Video Instagram Story?`,
          content: `Ikut arahan mudah di atas untuk memuat turun cerita Instagram dengan pantas di Savinginsta.`,
        },
        {
          title: `Bagaimanakah saya boleh memuat turun Sorotan daripada Instagram?`,
          content: `Untuk memuat turun sorotan Instagram, akaun tersebut mestilah awam. Masukkan nama pengguna pada Savinginsta.app dan klik 'Muat Turun'.`,
        },
        {
          title: `Bagaimana jika Saya Mahu Melihat Cerita IG Tanpa Nama?`,
          content: `Kami mempunyai penyelesaian yang sempurna: pemapar Cerita Instagram tanpa nama kami Pemapar Cerita Instagram.`,
        },
        {
          title: `Adakah Anda Perlu Log Masuk dengan Akaun Instagram Anda?`,
          content: `Tiada log masuk diperlukan. Savinginsta tidak meminta sebarang maklumat peribadi, memastikan muat turun yang selamat dan tanpa nama.`,
        },
        {
          title: `Bolehkah saya Simpan Video Terus di Instagram?`,
          content: `Ya, tetapi anda mesti menunggu sehingga video tamat.`,
        },
        {
          title: `Adakah Tapak Web Menyokong Muat Turun daripada Insta untuk Komputer?`,
          content: `Sudah tentu, anda boleh memuat turun video, foto, cerita dan banyak lagi daripada PC. Lihat juga: Muat turun dari Insta pada PC.`,
        },
        {
          title: `Bolehkah Anda Muat Turun Cerita Instagram untuk Android?`,
          content: `Ya, salin pautan siaran, tampalkannya ke dalam kotak tapak web kami, dan simpan. Untuk maklumat lanjut: Muat turun daripada Insta pada Android.`,
        },
        {
          title: `Cara Muat Turun Video dan Foto Instagram Story pada iPhone?`,
          content: `Ia semudah pada Android. Lihat panduan untuk Muat turun cerita Instagram untuk iOS.`,
        },
        {
          title: `Di Mana Saya Boleh Cari Video Cerita Tersimpan pada Komputer?`,
          content: `Semak sejarah muat turun penyemak imbas anda menggunakan Ctrl+J untuk Windows dan Shift+Command+J untuk Mac.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "story",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "story",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "story",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "story",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "story",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "story",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },
    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "story",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "story",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
  },
};
</script>
<style lang="scss" scoped>
@import "@/static/style/story.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
    